package com.xuelang.pipeline.artifact.domain.resource.service;

import com.xuelang.pipeline.artifact.client.common.result.PageRecord;
import com.xuelang.pipeline.artifact.client.resource.dto.RepositoryPackageQuery;
import com.xuelang.pipeline.artifact.domain.resource.RepositoryPackage;

import java.util.List;

/**
 * 仓库制品包领域服务类
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
public interface RepositoryPackageDomainService {
    /**
     * 获取仓库制品包列表，有过滤条件
     *
     * @param currentPage
     * @param pageSize
     * @param repositoryPackageQuery
     * @return
     */
    PageRecord<RepositoryPackage> pageList(long currentPage, long pageSize, RepositoryPackageQuery repositoryPackageQuery);
    /**
     * 获取仓库制品包列表，有过滤条件
     *
     * @param repositoryPackageQuery
     * @return
     */
    List<RepositoryPackage> list(RepositoryPackageQuery repositoryPackageQuery);

    /**
     * 新增仓库制品包
     *
     * @param repositoryPackage
     * @return
     */
    Boolean save(RepositoryPackage repositoryPackage);

    /**
     * 更新仓库制品包
     *
     * @param repositoryPackage
     * @return
     */
    Boolean update(RepositoryPackage repositoryPackage);
    /**
     * 删除仓库制品包
     *
     * @param repositoryPackageUuid
     * @return
     */
    Boolean delete(String repositoryPackageUuid);
    /**
     * 查询仓库制品包
     *
     * @param repositoryPackageUuid
     * @return
     */
    RepositoryPackage query(String repositoryPackageUuid);

    /**
     * 查询仓库制品包
     *
     * @param instanceRepositoryName
     * @param name
     * @param group
     * @param format
     * @return
     */
    RepositoryPackage queryByPackage(String instanceRepositoryName, String name, String group, String format);

    /**
     * 更新制品组件的版本
     *
     * @param instanceRepositoryName
     * @param name
     * @param group
     * @param format
     * @param version
     */
    void updateByPackage(String instanceRepositoryName, String name, String group, String format, String version);

    /**
     * 查询仓库制品包
     *
     * @param packageName
     * @return
     */
    RepositoryPackage queryByPackageName(String instanceRepositoryName, String packageName);

    /**
     * 更新制品组件的版本
     *
     * @param packageName
     * @param version
     * @param format
     */
    void updateByPackageName(String instanceRepositoryName, String packageName, String version, String format);
}
